iT邦幫忙

2022 iThome 鐵人賽

DAY 14
1

Day 14 I18n

i18n 是 internationalization 的縮寫,意思是國際化,也就是支援多國語言。

在開發 Bot 時,我們會希望能夠支援多國語言,這樣才能讓更多的人使用我們的 Bot,而不是只有一個語言的使用者。

使用者設定

因為 Discord 的社群是全球的,所以我們需要讓使用者能夠自行設定語言,這樣才能讓不同語言的使用者能夠選擇自己想要的語言。

因此,我們可以在 guild user 兩個層級實作語言設定。

如果使用者個人有設定語言,則使用個人的設定,否則使用 guild 的語言設定。

那我們應該會需要 !lang!channel lang 指令來讓使用者設定語言。

模組設定

我們在使用模組時,需要給定一個 fallback 語言,這樣當使用者沒有設定語言(或設定的語言沒有相對應詞語)時,我們就能夠使用 fallback 語言來顯示。

另外,我們還需提供一個 table,來儲存所有的語言對應的詞語,那如果放進去的是一個回傳字串的函式呢?就代表我們會使用呼叫時傳入的參數來產生字串,這樣就能夠讓我們顯示的語言更有彈性。

https://i.imgur.com/ivNUIka.png

模組使用

在使用時,我們可以從模組在 ctx 中添加的 .t 屬性來取得翻譯後的字串。

async messageCreate(
    args: [message: Message<boolean>],
    ctx: StoreContext & StoreSubContext,
    next: CallNextModule,
): Promise<void> {
    const [message] = args;

    await message.reply(ctx.t("hello"));

    // 或是
    await message.reply(ctx.t("time", { time: new Date() }));
}

每日鐵人賽熱門 Top 10 (2022-09-29)

以 2022/09/28 20:00 ~ 2022/09/29 20:00 文章觀看數增加值排名

誤差: 1 小時

  1. +1064 D01 - 沒時間解釋了,快上車!
    • 作者: 鱈魚
    • 系列:派對動物嗨起來!
  2. +1010 D10 - 讓前後端接上線
    • 作者: 鱈魚
    • 系列:派對動物嗨起來!
  3. +1009 D09 - NestJS 是啥?好吃嗎?
    • 作者: 鱈魚
    • 系列:派對動物嗨起來!
  4. +991 D08 - 載入就應該要有載入的樣子
    • 作者: 鱈魚
    • 系列:派對動物嗨起來!
  5. +988 D11 - 開房間!開派對!♪( ◜ω◝و(و
    • 作者: 鱈魚
    • 系列:派對動物嗨起來!
  6. +981 D02 - 來打個草稿吧
    • 作者: 鱈魚
    • 系列:派對動物嗨起來!
  7. +978 D06 - 打造遊戲選單按鈕
    • 作者: 鱈魚
    • 系列:派對動物嗨起來!
  8. +973 D04 - 門面怎麼可以沒有背景
    • 作者: 鱈魚
    • 系列:派對動物嗨起來!
  9. +967 D03 - 建立專案
    • 作者: 鱈魚
    • 系列:派對動物嗨起來!
  10. +957 D05 - 飄吧!多邊形!
    • 作者: 鱈魚
    • 系列:派對動物嗨起來!
  11. +956 D12 - 歡迎光臨遊戲大廳
    • 作者: 鱈魚
    • 系列:派對動物嗨起來!
  12. +956 D13 - 來布置一下吧
    • 作者: 鱈魚
    • 系列:派對動物嗨起來!
  13. +952 D07 - 開趴前先 loading 一下
    • 作者: 鱈魚
    • 系列:派對動物嗨起來!
  14. +950 D14 - 裝飾大廳細節
    • 作者: 鱈魚
    • 系列:派對動物嗨起來!
  15. +326 「全端挑戰」 express用法 建立Api schema CRUD 的練習與熟悉 part1
    • 作者: Ko
    • 系列:自己做一個價值幾十萬的動態網站,學會Mern開發、前台UI設計各式觀念與各式Lib、typescript你該學會的前端技術
  16. +281 React白話文運動10-React Props
    • 作者: hogantech
    • 系列:React框架白話文運動
  17. +273 React白話文運動01-介紹
    • 作者: hogantech
    • 系列:React框架白話文運動
  18. +272 React白話文運動05-高階函式(Higher-order function)
    • 作者: hogantech
    • 系列:React框架白話文運動
  19. +271 終究都要學 React 何不現在學呢? - React 基礎 - React 是什麼? - (1)
    • 作者: Ray
    • 系列:終究都要學 React 何不現在學呢?
  20. +271 React白話文運動12-React Hook-useState 01
    • 作者: hogantech
    • 系列:React框架白話文運動

因為今天內容有點無聊,所以... 今天排行榜買一送一!


上一篇
Day 13 今天沒時間重構了,所以來說說排行榜資料
下一篇
Day 15 努力重構中 QQ
系列文
Discord Bot with TypeScript: Framework, Database, and Modules30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言